/**
 * 工作台页面脚本
 */

const { ipcRenderer } = require('electron');

(function() {
  'use strict';

  console.log('[工作台] 脚本加载');

  // 页面加载完成后初始化
  document.addEventListener('DOMContentLoaded', async function() {
    console.log('[工作台] 初始化');

    // 初始化用户信息
    await loadUserInfo();

    // 初始化统计数据
    await loadStatistics();

    // 初始化最近活动
    await loadRecentActivities();

    // 初始化进行中的任务
    await loadOngoingTasks();

    // 初始化系统状态
    await loadSystemStatus();

    // 绑定快捷功能点击事件
    bindQuickActions();

    // 定时更新状态
    startAutoRefresh();

    console.log('[工作台] 初始化完成');
  });

  /**
   * 加载用户信息
   */
  async function loadUserInfo() {
    try {
      // 从localStorage获取用户信息
      const userDataStr = localStorage.getItem('userData');
      if (userDataStr) {
        const userData = JSON.parse(userDataStr);
        const userNameElement = document.getElementById('userName');
        if (userNameElement) {
          userNameElement.textContent = userData.nickname || userData.username || '用户';
        }
      }
    } catch (error) {
      console.error('[工作台] 加载用户信息失败:', error);
    }
  }

  /**
   * 加载统计数据
   */
  async function loadStatistics() {
    try {
      // TODO: 从主进程获取实际统计数据
      // 这里先使用模拟数据
      updateStatItem('totalFiles', '1,234');
      updateStatItem('uploadCount', '15');
      updateStatItem('downloadCount', '8');
      updateStatItem('totalSize', '2.5 GB');
    } catch (error) {
      console.error('[工作台] 加载统计数据失败:', error);
    }
  }

  /**
   * 更新统计项
   */
  function updateStatItem(id, value) {
    const element = document.getElementById(id);
    if (element) {
      // 添加动画效果
      element.style.opacity = '0';
      setTimeout(() => {
        element.textContent = value;
        element.style.transition = 'opacity 0.3s';
        element.style.opacity = '1';
      }, 100);
    }
  }

  /**
   * 加载最近活动
   */
  async function loadRecentActivities() {
    try {
      const activityList = document.getElementById('activityList');
      if (!activityList) return;

      // TODO: 从主进程获取实际活动数据
      // 这里先使用已有的HTML内容
    } catch (error) {
      console.error('[工作台] 加载最近活动失败:', error);
    }
  }

  /**
   * 加载进行中的任务
   */
  async function loadOngoingTasks() {
    try {
      const tasksList = document.getElementById('tasksList');
      const taskCount = document.getElementById('taskCount');
      
      if (!tasksList) return;

      // TODO: 从主进程获取实际任务数据
      // 模拟数据
      const tasks = [];

      if (tasks.length === 0) {
        taskCount.textContent = '0 个任务';
        tasksList.innerHTML = `
          <div class="empty-state">
            <div class="empty-icon">✨</div>
            <div class="empty-text">暂无进行中的任务</div>
          </div>
        `;
      } else {
        taskCount.textContent = `${tasks.length} 个任务`;
        tasksList.innerHTML = tasks.map(task => createTaskItem(task)).join('');
      }
    } catch (error) {
      console.error('[工作台] 加载任务失败:', error);
    }
  }

  /**
   * 创建任务项HTML
   */
  function createTaskItem(task) {
    return `
      <div class="task-item">
        <div class="task-header">
          <span class="task-name">${task.name}</span>
          <span class="task-status">${task.status}</span>
        </div>
        <div class="task-progress">
          <div class="progress-bar">
            <div class="progress-fill" style="width: ${task.progress}%"></div>
          </div>
        </div>
        <div class="task-info">
          <span>${task.progress}%</span>
          <span>${task.speed || '0 KB/s'}</span>
        </div>
      </div>
    `;
  }

  /**
   * 加载系统状态
   */
  async function loadSystemStatus() {
    try {
      const systemStatus = document.getElementById('systemStatus');
      const serverStatus = document.getElementById('serverStatus');
      const wsStatus = document.getElementById('wsStatus');
      const transferSpeed = document.getElementById('transferSpeed');
      const clientId = document.getElementById('clientId');

      // TODO: 从主进程获取实际状态数据
      // 模拟数据
      if (systemStatus) systemStatus.textContent = '正常';
      
      if (serverStatus) {
        serverStatus.innerHTML = '<span class="status-dot online"></span>已连接';
      }
      
      if (wsStatus) {
        wsStatus.innerHTML = '<span class="status-dot online"></span>在线';
      }
      
      if (transferSpeed) {
        transferSpeed.textContent = '0 KB/s';
      }

      // 获取客户端ID
      const userDataStr = localStorage.getItem('userData');
      if (userDataStr && clientId) {
        const userData = JSON.parse(userDataStr);
        if (userData.clientId) {
          clientId.textContent = userData.clientId;
        }
      }
    } catch (error) {
      console.error('[工作台] 加载系统状态失败:', error);
    }
  }

  /**
   * 绑定快捷功能点击事件
   */
  function bindQuickActions() {
    const actionCards = document.querySelectorAll('.action-card');
    
    actionCards.forEach(card => {
      card.addEventListener('click', function() {
        const action = this.getAttribute('data-action');
        handleQuickAction(action);
      });
    });
  }

  /**
   * 处理快捷功能点击
   */
  function handleQuickAction(action) {
    console.log('[工作台] 执行快捷功能:', action);

    switch (action) {
      case 'upload':
        // 跳转到文件页面并触发上传
        window.location.href = '../index.html?action=upload';
        break;
      
      case 'download':
        // 跳转到文件页面并触发下载
        window.location.href = '../index.html?action=download';
        break;
      
      case 'sync':
        // 跳转到文件页面并触发同步
        window.location.href = '../index.html?action=sync';
        break;
      
      case 'browse':
        // 跳转到文件浏览页面
        window.location.href = '../index.html';
        break;
      
      case 'transfer':
        // 跳转到传输管理页面
        window.location.href = './transfer.html';
        break;
      
      case 'settings':
        // 跳转到设置页面
        window.location.href = './settings.html';
        break;
      
      default:
        console.warn('[工作台] 未知的操作:', action);
    }
  }

  /**
   * 开始自动刷新
   */
  function startAutoRefresh() {
    // 每30秒刷新一次统计数据和系统状态
    setInterval(async () => {
      await loadStatistics();
      await loadSystemStatus();
      await loadOngoingTasks();
    }, 30000);
  }

  /**
   * 格式化文件大小
   */
  function formatFileSize(bytes) {
    if (bytes === 0) return '0 B';
    const k = 1024;
    const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
    const i = Math.floor(Math.log(bytes) / Math.log(k));
    return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
  }

  /**
   * 格式化时间
   */
  function formatTime(timestamp) {
    const now = Date.now();
    const diff = now - timestamp;
    
    const seconds = Math.floor(diff / 1000);
    const minutes = Math.floor(seconds / 60);
    const hours = Math.floor(minutes / 60);
    const days = Math.floor(hours / 24);

    if (days > 0) return `${days}天前`;
    if (hours > 0) return `${hours}小时前`;
    if (minutes > 0) return `${minutes}分钟前`;
    return `${seconds}秒前`;
  }

  // 导出函数供其他脚本使用
  if (typeof window !== 'undefined') {
    window.workbench = {
      loadStatistics,
      loadOngoingTasks,
      loadSystemStatus,
      formatFileSize,
      formatTime
    };
  }
})();
